package com.wuzheng.wisgo.sanitation.cloud.service.jobshift.impl;

import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.wuzheng.wisgo.sanitation.cloud.paraandgetutil.Exceptions;
import com.wuzheng.wisgo.sanitation.cloud.paraandgetutil.VehicleException;
import com.wuzheng.wisgo.sanitation.cloud.repository.entity.jobshift.BaJobShift;
import com.wuzheng.wisgo.sanitation.cloud.repository.mapper.jobshift.BaJobShiftMapper;
import com.wuzheng.wisgo.sanitation.cloud.service.jobshift.BaJobShiftService;
import com.wuzheng.wisgo.sanitation.framework.base.service.impl.BaseServiceImpl;
import com.wuzheng.wisgo.sanitation.framework.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * @author：sp
 * @date：Created in 2019-12-12
 * @description：作业班次服务实现类
 * @modified By：
 * @version: 1.0
 */
@Service
public class BaJobShiftServiceImpl extends BaseServiceImpl<BaJobShift> implements BaJobShiftService {

    private static final Logger logger = LoggerFactory.getLogger(BaJobShiftServiceImpl.class);

    @Autowired
    private BaJobShiftService baJobShiftService;

    @Override
    public void insertJobShift(BaJobShift baJobShift) throws VehicleException {
        logger.info("接收参数"+baJobShift.toString());
        //数据校验
        this.check(baJobShift);
        //主数据
        baJobShift.setCustomerId("wz");
        baJobShift.setDeFlag(false);
        baJobShift.setCreator("local");
        baJobShift.setCreateTime(new Date());
        baJobShift.setModifier("local");
        baJobShift.setModifyTime(new Date());
        baJobShift.setIpAddress("120.0.0.1");
        baJobShiftService.insert(baJobShift);
    }

    @Override
    public void updateJobShift(BaJobShift baJobShift) throws VehicleException {
        //数据校验
        this.check(baJobShift);
        if(StringUtils.isEmpty(baJobShift.getId())){
            throw Exceptions.VehicleException("班次ID不能为空");
        }
        baJobShift.setModifier("local");
        baJobShift.setModifyTime(new Date());
        baJobShiftService.updateById(baJobShift);
    }

    @Override
    public void deleteJobShift(String[] id) throws VehicleException {
        if(id.length>0){
            for(int i=0;i<id.length;i++){
                BaJobShift baJobShift=new BaJobShift();
                baJobShift.setId(id[i]);
                baJobShift.setDeFlag(true);
                baJobShiftService.updateById(baJobShift);
            }
        }else{
            throw Exceptions.VehicleException("班次ID不能为空");
        }

    }

    @Override
    public List<BaJobShift> list(String typeCode) {
        BaJobShiftMapper shiftMapper = this.getMapper(BaJobShiftMapper.class);
        EntityWrapper<BaJobShift> wrapper = new EntityWrapper<>();
        wrapper.eq("de_flag", false).eq("job_type_id", typeCode);
        List<BaJobShift> shiftList = shiftMapper.selectList(wrapper);
        return shiftList;
    }


    private void check(BaJobShift baJobShift) throws VehicleException {
        if(StringUtils.isEmpty(baJobShift.getShiftName())){
            throw Exceptions.VehicleException("班次名称不能为空");
        }
        if(StringUtils.isEmpty(baJobShift.getJobTypeId())){
            throw Exceptions.VehicleException("作业类型不能为空");
        }
        if(StringUtils.isEmpty(baJobShift.getJobTypeName())){
            throw Exceptions.VehicleException("作业类型不能为空");
        }
        if(StringUtils.isEmpty(baJobShift.getStartWorkTime().toString())){
            throw Exceptions.VehicleException("上班时间不能为空");
        }
        if(StringUtils.isEmpty(baJobShift.getOffWorkTime().toString())){
            throw Exceptions.VehicleException("下班时间不能为空");
        }
        if(StringUtils.isEmpty(baJobShift.getLateThreshold())){
            throw Exceptions.VehicleException("迟到阀值不能为空");
        }
        if(StringUtils.isEmpty(baJobShift.getEarlyThreshold())){
            throw Exceptions.VehicleException("早退阀值不能为空");
        }


    }
}
